import * as express from "express";
import { Application } from "express"
import { IController } from './interface/IController.interface'
// 引入数据库模块
import * as mongoose from 'mongoose'
// 导出文件
export class App {
    // 端口+wed服务器实例
    // 语法意思：这是一个private(私有)字段，他的类型是number(数字类型)
    private port: number;
    private app: Application
    // 这是exepess.Application类型也是一个Web服务器实例
    // controllers是子路由
    // 这个类在实例化接收IController
    constructor(port: number, controllers: IController[]) {
        // 暴露api端口
        this.port = port;
        this.app = express();
        this.initializeMiddleware()
        this.startListen()
        this.initializeControllers(controllers)
    }

    // express应用中间间
    private initializeMiddleware() {
        //    express.json是express 4.13版本以后的一个内嵌的中间件
        // 原本用bodyParser
        // 有了这个就可以接收和发送json数据
        this.app.use(express.json())
    }

    private initializeControllers(controllers: IController[]) {
        controllers.forEach((res) => {
            this.app.use("/api", res.router)
        })
    }
    private startListen() {
        const port = this.port;
        this.app.listen(port, () => {
            console.log(`正在监听${port}端口`)
        })
    }


    // 数据库链接
    private connecToMongDB(){
        mongoose.connect
    }








}